package com.example.smartwaterapi.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 番茄闹钟实体类
 */
@Data
@TableName("pomodoro_clock")
public class PomodoroClock implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 设备ID
     */
    private Long deviceId;

    /**
     * 是否启用番茄钟
     */
    private Integer isEnabled;

    /**
     * 工作时长(分钟)
     */
    private Integer workDuration;

    /**
     * 短休息时长(分钟)
     */
    private Integer shortBreak;

    /**
     * 长休息时长(分钟)
     */
    private Integer longBreak;

    /**
     * 长休息间隔(几个番茄后)
     */
    private Integer longBreakInterval;

    /**
     * 当前状态 0:停止 1:工作中 2:短休息 3:长休息
     */
    private Integer currentStatus;

    /**
     * 当前会话开始时间
     */
    private LocalDateTime currentSessionStart;

    /**
     * 当前会话结束时间
     */
    private LocalDateTime currentSessionEnd;

    /**
     * 剩余时间(秒)
     */
    private Integer remainingTime;

    /**
     * 今日完成番茄数
     */
    private Integer todayCompletedPomodoros;

    /**
     * 今日总工作时间(分钟)
     */
    private Integer todayTotalWorkTime;

    /**
     * 统计日期
     */
    private LocalDate todayDate;

    /**
     * 总完成番茄数
     */
    private Integer totalCompletedPomodoros;

    /**
     * 总工作时间(分钟)
     */
    private Integer totalWorkTime;

    /**
     * 最长连续天数
     */
    private Integer longestStreak;

    /**
     * 当前连续天数
     */
    private Integer currentStreak;

    /**
     * 休息时是否提醒饮水
     */
    private Integer waterReminderInBreak;

    /**
     * 休息时建议饮水量(ml)
     */
    private Integer waterReminderAmount;

    /**
     * 提醒音效
     */
    private String notificationSound;

    /**
     * 自动开始休息
     */
    private Integer autoStartBreak;

    /**
     * 自动开始工作
     */
    private Integer autoStartWork;

    /**
     * 创建时间
     */
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;
} 